<%@ page language="java" import="up7.*" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<%@	page import="com.google.gson.Gson" %>
<%@ page import="up7.model.*" %>
<%@ page import="up7.biz.*" %>
<%@ page import="up7.utils.*" %>
<%@ page import="up7.database.sql.SqlFile" %>
<%@	page import="org.apache.commons.lang.StringUtils" %>
<%@ page import="java.net.URLDecoder" %>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="net.sf.json.JSONObject" %>
<%@ page import="java.io.IOException" %>
<%@ page import="java.io.UnsupportedEncodingException" %>
<%
    out.clear();
/*
	所有单个文件均以md5模式存储。
	更新记录：
		2012-05-24 完善
		2012-06-29 增加创建文件逻辑，
		2015-07-30 取消文件夹层级结构存储规则，改为使用日期存储规则，文件夹层级结构仅保存在数据库中。
		2016-01-07 返回值改为JSON
		2016-04-09 完善逻辑。
		2017-07-13 取消生成id操作
*/
    WebBase web = new WebBase(pageContext);

    String pid      = web.queryString("pid");
    String pidRoot  = web.queryString("pidRoot");
    if(StringUtils.isBlank(pidRoot)) pidRoot = pid;//当前文件夹是根目录
    String id		= web.queryString("id");
    String md5 		= web.queryString("md5");
    String uid 		= web.queryString("uid");
    String lenLoc 	= web.queryString("lenLoc");//数字化的文件大小。12021
    String sizeLoc 	= web.queryString("sizeLoc");//格式化的文件大小。10MB
    String blockSize = web.queryString("blockSize");//块大小
    String callback = web.queryString("callback");
    String pathLoc	= web.queryString("pathLoc");
    pathLoc			= PathTool.url_decode(pathLoc);
    String pathRel  = web.queryString("pathRel");
    pathRel = PathTool.url_decode(pathRel);

    //参数为空
    if (	StringUtils.isBlank(md5)
            && StringUtils.isBlank(uid)
            && StringUtils.isBlank(sizeLoc))
    {
        web.toContent(callback + "({\"value\":null})");
        return;
    }

    FileInf fileSvr= new FileInf();
    fileSvr.id = id;
    fileSvr.pid = pid;
    fileSvr.pidRoot = pidRoot;
    boolean isRootFile = StringUtils.equals(pathRel,"/");
    fileSvr.fdChild = !isRootFile;
    fileSvr.uid = uid;
    fileSvr.nameLoc = PathTool.getName(pathLoc);
    fileSvr.nameSvr = fileSvr.nameLoc;
    fileSvr.pathLoc = pathLoc;
    fileSvr.pathRel = PathTool.combine(pathRel, fileSvr.nameLoc);
    fileSvr.lenLoc = Long.parseLong(lenLoc);
    fileSvr.sizeLoc = sizeLoc;
    fileSvr.deleted = false;
    fileSvr.md5 = md5;
    fileSvr.blockSize=Integer.parseInt(blockSize);

    //所有单个文件均以uuid/file方式存储
    PathGuidBuilder pb = new PathGuidBuilder();
    fileSvr.pathSvr = pb.genFile(fileSvr);

  	//同名文件检测
  	/*DBFile df = new DBFile();
    if (df.existSameFile(fileSvr.nameLoc, fileSvr.pid))
    {
        String data = callback + "({'value':'','ret':false,'code':'101'})";
        out.write(data);
        return;
    }*/

    SqlFile.build().Add(fileSvr);
    //触发事件
    up7_biz_event.file_create(fileSvr);

    
    Gson gson = new Gson();
    String json = gson.toJson(fileSvr);
    json = PathTool.url_encode(json);
    json = callback + "({\"value\":\"" + json + "\",\"ret\":true})";//返回jsonp格式数据。
    out.write(json);%>